タグ:ドメイン駆動設計
モノリシックなデータレイクから分散型データメッシュへ移行する方法
多くの企業は、ビジネスインサイトを提供し、最終的には自動化されたインテリジェントな意思決定を行うために、大規模なデータ民主化を期待して、次世代のデータレイクに投資しています。データレイクアーキテクチャに基づくデータプラットフォームには、大規模な場合に約束が果たされないという共通の失敗モードがあります。これらの失敗モードに対処するには、レイクの中央集権的なパラダイム、またはその前身であるデータウェアハウスから移行する必要があります。ドメインを最重要事項と考え、セルフサービスデータインフラストラクチャを作成するためにプラットフォーム思考を適用し、データを製品として扱うという、最新の分散型アーキテクチャから引き出されるパラダイムに移行する必要があります。
Xapo Bankにおけるアーキテクチャ実践の分散化
XapoはBitcoinサービスプロバイダーとして設立され、オンライン銀行へと発展しました。この移行中に、ソフトウェア資産を再評価し、将来を導くためのアーキテクチャ機能を確立する必要がありました。ドメイン駆動設計、チームトポロジー、およびアーキテクチャアドバイスプロセスのアイデアを取り入れ、アーキテクチャアドバイスフォーラムを開発しました。これにより、ソフトウェアデリバリーチームのアラインメントが向上し、一貫したテクノロジ戦略が策定されました。
貧血ドメインモデル
これは、かなり長い間存在しているアンチパターンの一つですが、最近特に勢いを増しているように見えます。エリック・エヴァンスとこの件について話したところ、二人とも人気が高まっていることに気づきました。適切なドメインモデルの強力な推進者として、これは良いことではありません。
境界づけられたコンテキスト
境界づけられたコンテキストは、ドメイン駆動設計の中核となるパターンです。これは、大規模なモデルとチームを扱うためのDDDの戦略的設計セクションの焦点です。DDDは、モデルを異なる境界づけられたコンテキストに分割し、それらの相互関係を明確にすることで大規模なモデルに対処します。
CQRS
CQRSは、コマンドクエリ責務分離の略です。これは、私が最初にグレッグ・ヤングによって説明されたのを聞いたパターンです。その中心にあるのは、情報の更新に使うモデルと情報の読み取りに使うモデルを異なるものにすることができるという概念です。状況によっては、この分離は価値がありますが、ほとんどのシステムではCQRSによってリスクのある複雑性が加わることに注意してください。
コンテキスト検証
私の執筆活動において、私は長い間検証に関する記事を書くことを意図していました。検証は多くの混乱を招く分野であり、うまく機能するいくつかの手法についてしっかりとした説明を得ることは良いことです。しかし、人生は書くべきことで満ち溢れており、許容される時間よりも多いのです。
矛盾する観察
多くのコンピュータシステムは、データを格納し、それを人間にとって有用な情報に変えるために構築されています。これを行うとき、その情報を一貫性のあるものにしたいという自然な欲求があります。結局のところ、物事について二心があるコンピュータシステムには何の役にも立たないでしょう?
顧客ロイヤルティソフトウェア
先週カルガリーオフィスにいて、最も信頼できる技術リーダーの一人であるジョン・コルディバックと良い話をしました。彼は多くの旅行ロイヤルティソフトウェアシステム(マイレージ/スリーパーなど)に取り組み、深く掘り下げてきました。そして、これらの種類のものの性質と、それらについてより実りある方法で考える方法について話し合いました。
DDD_集約
集約は、ドメイン駆動設計のパターンです。DDD集約は、単一のユニットとして扱えるドメインオブジェクトのクラスターです。例としては、注文とその明細項目が挙げられます。これらは別々のオブジェクトですが、注文(その明細項目とともに)を単一の集約として扱うと便利です。
ドメイン駆動設計
ドメイン駆動設計は、ドメインのプロセスとルールを深く理解しているドメインモデルのプログラミングを中心に開発を進めるソフトウェア開発のアプローチです。この名前は、2003年にエリック・エヴァンスによって書かれた本に由来しており、その中でパターンカタログを通じてこのアプローチが説明されています。それ以来、実践者のコミュニティがアイデアをさらに発展させ、他のさまざまな書籍やトレーニングコースを生み出してきました。このアプローチは、多くの混乱しやすいロジックを整理する必要がある、複雑なドメインに特に適しています。
Eager Read Derivation
QCon San Franciscoで私が参加した興味深い講演の1つは、グレッグ・ヤングが最近のシステムで使用した特定のアーキテクチャについて講演したものでした。グレッグはドメイン駆動設計の大ファンです。この場合、トランザクションレートが高く、多くのユーザーにデータを提供する必要があるシステムで使用する必要があります。彼の設計について興味深いと思った点がいくつかあり、特にイベントソーシングの使用法に興味を持ちましたが、この投稿では1つの側面、つまりEager Read Derivationと呼ぶものに焦点を当てたいと思います。
タイプインスタンス同音異義語
"「戦争と平和」は素晴らしい本です。
「ちょっと見せて…この本は表紙がボロボロで残念だ」
2つの文はそれぞれ「本」という単語を使用しています。私たちは毎日このような組み合わせを何気なく見過ごしていますが、「本」という単語がこれらの文のそれぞれで全く異なる意味を持っていることに気づいていません。
値オブジェクト
プログラミングをしていると、複合として表現するのが便利なことが多いと感じます。2D座標はx値とy値で構成されます。金額は数値と通貨で構成されます。日付範囲は開始日と終了日で構成され、これらはそれぞれ年、月、日の複合になる場合があります。
これを行う際、2つの複合オブジェクトが同じかどうかという問題に直面します。両方とも(2,3)のデカルト座標を表す2つの点オブジェクトがある場合、それらを等しいとして扱うのが理にかなっています。この場合、x座標とy座標であるプロパティの値が原因で等しいオブジェクトは、値オブジェクトと呼ばれます。